package com.example.icongyou.api;

import com.example.icongyou.bean.Course;
import com.example.icongyou.bean.StudentCourse;
import com.example.icongyou.bean.ScoreUpdateRequest;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 对应后端 StudentCourseController 的 RESTful API 接口定义
 * 基础路径: /api/student_courses
 */
public interface StudentCourseApi {

    // POST /api/student_courses/{studentId}/{courseId} - 学生选课
    @POST("api/student_courses/{studentId}/{courseId}")
    Call<StudentCourse> enrollCourse(
            @Path("studentId") String studentId,
            @Path("courseId") String courseId
    );

    // GET /api/student_courses/student/{studentId} - 查询某个学生的所有选课记录
    @GET("api/student_courses/student/{studentId}")
    Call<List<StudentCourse>> getCoursesByStudent(@Path("studentId") String studentId);

    // DELETE /api/student_courses/{id} - 根据选课记录ID退课/删除记录
    @DELETE("api/student_courses/{id}")
    Call<Void> dropCourse(@Path("id") Integer id);

    // PUT /api/student_courses/score - 更新成绩
    // 后端接收 Map，我们使用 ScoreUpdateRequest 类作为请求体
    @PUT("api/student_courses/score")
    Call<String> updateScore(@Body ScoreUpdateRequest updateRequest);
    // 后端返回 String 消息
    @GET("api/student-courses/enrolled")
    Call<List<Course>> getEnrolledCourses(
            @Query("studentId") String studentId,
            @Query("semesterId") String semesterId
    );
}